<?php

/**
 * Ну модель, а шо?
 * 
 */
class Application_Model_CommonTools {

    // http://www.hurtom.com/news/whats_new/
    // 5332-ofcjjna-translteracja-alfavtu-latiniceju.html
    // зг = zgh

    public static $symbolMap = array( 'а' => 'a',    'А' => 'A',
                                      'б' => 'b',    'Б' => 'B',
                                      'в' => 'v',    'В' => 'V',
                                      'г' => 'h',    'Г' => 'H',
                                      'ґ' => 'g',    'Ґ' => 'G',
                                      'д' => 'd',    'Д' => 'D',
                                      'е' => 'e',    'Е' => 'E',
                                      'є' => 'ie',   'Є' => 'Ie',
                                      'ж' => 'zh',   'Ж' => 'Zh',
                                      'з' => 'z',    'З' => 'Z',
                                      'и' => 'y',    'И' => 'Y',
                                      'і' => 'i',    'І' => 'I',
                                      'ї' => 'i',    'Ї' => 'I',
                                      'й' => 'i',    'Й' => 'I',
                                      'к' => 'k',    'К' => 'K',
                                      'л' => 'l',    'Л' => 'L',
                                      'м' => 'm',    'М' => 'M',
                                      'н' => 'n',    'Н' => 'N',
                                      'о' => 'o',    'О' => 'O',
                                      'п' => 'p',    'П' => 'P',
                                      'р' => 'r',    'Р' => 'R',
                                      'с' => 's',    'С' => 'S',
                                      'т' => 't',    'Т' => 'T',
                                      'у' => 'u',    'У' => 'U',
                                      'ф' => 'f',    'Ф' => 'F',
                                      'х' => 'kh',   'Х' => 'Kh',
                                      'ц' => 'ts',   'Ц' => 'Ts',
                                      'ч' => 'ch',   'Ч' => 'Ch',
                                      'ш' => 'sh',   'Ш' => 'Sh',
                                      'щ' => 'shch', 'Щ' => 'Shch',
                                      'ь' => '',     'Ь' => '',
                                      'ю' => 'iu',   'Ю' => 'Iu',
                                      'я' => 'ia',   'Я' => 'Ia',
                                      'ы' => 'y',    'Ы' => 'Y',
                                      'ъ' => '',     'Ъ' => '',
                                      'э' => 'e',    'Э' => 'E'
                                    );
    public static $posDependent = array ('Є' => 'Ye', 'є' => 'ye',
                                         'Ї' => 'Yi', 'ї' => 'yi',
                                         'Й' => 'Y' , 'й' => 'y' ,
                                         'Ю' => 'Yu', 'ю' => 'yu',
                                         'Я' => 'Ya', 'я' => 'ya' );




    /**
     *
     * @deprecated UTF uncompatible
     *
     */
    public static function badTransliterate($text)
    {
        $text = strtr($text, array('зг' => 'zgh', 'Зг' => 'Zgh',
                                   'зГ' => 'zGh', 'ЗГ' => 'ZGh'));

        $cyr = 'абвгґдезиіїйклмнопрстуф';
        $lat = 'abvhgdezyiiiklmnoprstuf';

        $text = strtr($text, $cyr, $lat);

        //undone
        return $text;
    }

    /**
     *
     * @param string $text
     * @return string
     *
     */
    public static function transliterate($text)
    {
        // http://serge.yrik.org.ua/blog/blog/39.html
        // \bя=ya  анунах

        $text = preg_replace('/зг/u', 'zgh', $text);
        $text = preg_replace('/Зг/u', 'Zgh', $text);
        $text = preg_replace('/зГ/u', 'zGh', $text);
        $text = preg_replace('/ЗГ/u', 'ZGh', $text);

        $textLen = iconv_strlen($text, 'UTF-8');
        $newText = '';
        
        $prev = ' ';

        for ($i = 0; $i<$textLen; $i++) {

            $char = iconv_substr($text, $i, 1, 'UTF-8');

            // Якщо на початку слова я-ю-є-ї-й
            if (array_key_exists($char, self::$posDependent)) {

                if (preg_match('/^[^a-zA-Zа-яА-Я]$/u', $prev)) {
                    $newText .= self::$posDependent[$char];
                    $prev = $char;
                    continue;
                }
            }

            if (array_key_exists($char, self::$symbolMap)) {
                $newText .= self::$symbolMap[ $char ];
            } else {
                $newText .= $char;
            }

            $prev = $char;
        }//for

        return $newText;

    } //transliterate()
}

?>
